﻿using System;
using Jayway.Practices.CommonServiceManager.Configuration;
using Jayway.Practices.CommonServiceManager;

namespace Your.CommonServiceManagerAdapter.Configuration
{
	/// <summary>
	/// <see cref="IServiceConfigurator"/>
	/// </summary>
	public class YourServiceConfigurator : IServiceConfigurator
	{
		/// <summary>
		/// 
		/// </summary>
		/// <param name="serviceLocator"></param>
		public YourServiceConfigurator(IServiceLocator serviceLocator = null)
		{
			throw new NotImplementedException("Replace this with your adapter that implements Common Service Manager!");
		}

		/// <summary>
		/// 
		/// </summary>
		public YourContainer Container
		{
			get
			{
				throw new NotImplementedException("Replace this with your adapter that implements Common Service Manager!");
			}
			set
			{
				throw new NotImplementedException("Replace this with your adapter that implements Common Service Manager!");
			}
		}

		/// <summary>
		/// 
		/// </summary>
		public IServiceLocator ServiceLocator { get; set; }

		/// <summary>
		/// 
		/// </summary>
		/// <typeparam name="TContract"></typeparam>
		/// <param name="instance"></param>
		/// <param name="implementationKey"></param>
		public void RegisterInstance<TContract>(TContract instance, string implementationKey = null)
		{
			throw new NotImplementedException("Replace this with your adapter that implements Common Service Manager!");
		}

		/// <summary>
		/// 
		/// </summary>
		/// <param name="instance"></param>
		/// <param name="contractType"></param>
		/// <param name="implementationkey"></param>
		public void RegisterInstance(object instance, Type contractType, string implementationkey = null)
		{
			throw new NotImplementedException("Replace this with your adapter that implements Common Service Manager!");
		}

		/// <summary>
		/// 
		/// </summary>
		/// <typeparam name="TToConfigure"></typeparam>
		/// <param name="implementationKey"></param>
		/// <returns></returns>
		public IConfigurator<TToConfigure> Configure<TToConfigure>(string implementationKey = null)
		{
			throw new NotImplementedException("Replace this with your adapter that implements Common Service Manager!");
		}

		/// <summary>
		/// 
		/// </summary>
		/// <typeparam name="TContract"></typeparam>
		/// <typeparam name="TImplementation"></typeparam>
		/// <param name="implementationKey"></param>
		/// <returns></returns>
		public IConfigurator<TImplementation> RegisterType<TContract, TImplementation>(string implementationKey = null) where TImplementation : TContract
		{
			throw new NotImplementedException("Replace this with your adapter that implements Common Service Manager!");
		}
	}
}